home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / M-More Monthly Disks / (c)md.d64 / sprite dump.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  6KB  |  206 lines

  1. 100 REM   "PRINT A SPRITE"
  2. 110 REM
  3. 120 REM    DESIGN BY PHIL MOLL
  4. 130 REM    LOGIC BY BRIAN SMITHER
  5. 140 REM    SACRAMENTO COMMODORE
  6. 150 REM    COMPUTER CLUB
  7. 160 REM    PO BOX 2227
  8. 170 REM    SACRAMENTO, CA 95810
  9. 180 REM
  10. 190 REM IN ORDER TO USE THIS UTILITY,
  11. 200 REM SPRITE DATA MUST HAVE BEEN
  12. 210 REM PREVIOUSLY STORED IN MEMORY.
  13. 220 REM
  14. 230 REM PRINTER DEVICE IS 4 AND ANY
  15. 240 REM INTERFACE TO A NON-COMMODORE
  16. 250 REM PRINTER MUST EMULATE THE 1515,
  17. 260 REM 1525, AND 1526 DOT ADDRESSABLE
  18. 270 REM GRAPHICS ADEQUATELY.
  19. 280 REM
  20. 290 REM THIS PROGRAM LOGIC MAY BE
  21. 300 REM INSERTED INTO A SPRITE EDITOR
  22. 310 REM TYPE PROGRAM AS A SUBROUTINE.
  23. 320 :
  24. 330 :
  25. 340 PRINT"[147]":POKE53280,0:POKE53281,0:POKE646,3:V=53248:POKE2040,192
  26. 350 POKEV+23,71:POKEV+39,8
  27. 360 FORSD=1TO12:PRINT:NEXT
  28. 370 PRINTTAB(9)"PLEASE WAIT 3 SECONDS"
  29. 380 FORJ=12288TO12350:READQ:POKEJ,Q:NEXT
  30. 390 POKE2041,193:FORJ=12352TO12414:READR:POKEJ,R:NEXT
  31. 400 POKE2042,194:FORJ=12416TO12478:READS:POKEJ,S:NEXT
  32. 410 POKE2043,195:FORJ=12480TO12542:READD:POKEJ,D:NEXT
  33. 420 POKE2044,196:FORJ=12544TO12606:READG:POKEJ,G:NEXT
  34. 430 POKE2045,197:FORJ=12608TO12670:READH:POKEJ,H:NEXT
  35. 440 POKE2046,198:FORJ=12672TO12734:READK:POKEJ,K:NEXT
  36. 450 PRINT"[147]":POKEV+21,127
  37. 460 POKEV+0,146:POKEV+6,165:POKEV+7,160
  38. 470 POKEV+1,130:POKEV+42,12
  39. 480 POKEV+8,165:POKEV+9,160:POKEV+43,4
  40. 490 POKEV+10,165:POKEV+11,157:POKEV+44,14
  41. 500 POKEV+12,150:POKEV+13,60:POKEV+45,12:POKEV+29,64:POKEV+27,0
  42. 510 DATA0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,128,0,7,0
  43. 520 DATA0,7,128,0,7,0,0,7,128,7
  44. 530 DATA255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  45. 540 DATA63,255,255
  46. 550 REM
  47. 560 POKEV+40,8
  48. 570 POKEV+2,168
  49. 580 POKEV+3,130
  50. 590 DATA0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  51. 600 DATA0,0,0,0,0,0,0,255,255,0,255,255,0,255,255,0,255,255,0,255,255,0
  52. 610 DATA255,255,0,255,255,0
  53. 620 REM
  54. 630 POKEV+41,8:POKEV+4,180:POKEV+5,130
  55. 640 DATA0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,240,0,0,112
  56. 650 DATA0,0,240,0,0,112,0,0,240,0,255,255,192,255,255,255,255,255,255,255
  57. 660 DATA255,223,255,255,255,255,255,255,255,255,252
  58. 670 GOSUB970
  59. 680 PRINT"":FORSD=1TO11:PRINT:NEXTSD:FORPA=1TO3:PRINTTAB(17)"    ":NEXT
  60. 690 PRINT"[145][145]":A$="          DATA2,0,15"
  61. 700 FORI=1TOLEN(A$)
  62. 710 PRINTMID$(A$,LEN(A$)-I+1,I);"[145]"
  63. 720 FORT=1TO30:NEXTT
  64. 730 NEXTI
  65. 740 PRINT"                     "
  66. 750 PRINT"":FORSD=1TO10-ZZ:PRINT:NEXT:PRINTTAB(17)"    "
  67. 760 IFZZ=0THENPOKEV+7,153:POKEV+9,154
  68. 770 IFZZ=1THENPOKEV+7,145:POKEV+9,146:POKEV+11,147
  69. 780 IFZZ=2THENPOKEV+7,138:POKEV+9,139:POKEV+11,140
  70. 790 IFZZ=2THEN820
  71. 800 ZZ=ZZ+1:PRINT"":FORSD=1TO14:PRINT:NEXT
  72. 810 GOTO690
  73. 820 PRINT"":FORSD=1TO10:PRINT:NEXT:FORT=1TO1000:NEXT
  74. 830 GOTO1050
  75. 840 DATA0,0,0,0,56,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  76. 850 DATA0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  77. 860 REM SHIRT/ARMS
  78. 870 DATA0,0,192,0,1,128,0,3,0,0,124,0,0,220,0,1,156,0,0,220,0,0,0,0,0,0,0,0,0
  79. 880 DATA0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  80. 890 REM PANTS
  81. 900 DATA0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,54,0,0
  82. 910 DATA54,0,0,54,0,0,54,0,0,54,0,0,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  83. 920 DATA0,0,0,0,0,0
  84. 930 REM    DUMP A
  85. 940 DATA0,0,0,0,0,0,0,0,0,246,177,190,214,187,182,214,191,190,214,181,176
  86. 950 DATA247,177,176,0,0,0,0,0,0,0,0,0,0,0,0,0,60,0,0,102,0,0,102,0,0,126,0,0
  87. 960 DATA102,0,0,102,0,0,102,0,0,0,0,0,0,0
  88. 970 PRINT"":FORSD=1TO17:PRINT:NEXT
  89. 980 PRINTTAB(4)"[159]                           "
  90. 990 PRINTTAB(4)"[129]                   "
  91. 1000 PRINTTAB(4)"[154]                     "
  92. 1010 PRINTTAB(4)"[156]              "
  93. 1020 PRINTTAB(4)"                     "
  94. 1030 PRINT:PRINTTAB(6)"[154]BY[129]: [158]B[156]R[150]I[153]A[154]N [159]S[129]M[129]I[156]TH[158]E[150]R[159] & [129]P[156]H[159]I[154]L [156]M[158]0[153]L[150]L[145]"
  95. 1040 RETURN
  96. 1050 PRINT"[147]":POKE53280,0:POKE53281,0:POKEV+21,56:POKE646,3:PRINT:PRINT
  97. 1060 A$="DUMP A SPRITE":GOSUB1190
  98. 1070 FORSD=1TO12:PRINT:NEXT:POKE646,12
  99. 1080 PRINTTAB(10)"F1 =  INSTRUCTIONS":PRINT
  100. 1090 PRINTTAB(10)"F3 =  LIST THE SUBROUTINE":PRINT
  101. 1100 PRINTTAB(10)"F5 =  PRINT THE SUBROUTINE":PRINT
  102. 1110 PRINTTAB(10)"F7 =  RUN ROUTINE
  103. 1120 [161]RT$:[139]RT$[178]""[167]1120
  104. 1130 [139] RT$[178][199](133) [167] 1820:
  105. 1140 [139] RT$[178][199](134) [167] [155] 1180[171]1750
  106. 1150 [139] RT$[178][199](135) [167] 2020
  107. 1160 [139] RT$[178][199](136) [167] 1290
  108. 1170 [137]1120
  109. 1180 [128]
  110. 1190 A[178][195](A$):[139]A[173]2[179][177][181](A[173]2)[167]A$[178]" "[170]A$:[137] 1190
  111. 1200 [129]I[178]1[164]A[173]2
  112. 1210 [153][163]19[171]I);[200](A$,I);[201](A$,I)
  113. 1220 [153]"ON";:[129]T[178]1[164]50:[130]:[130]
  114. 1230 [142]
  115. 1240 [143]*****************************
  116. 1250 [143]*****************************
  117. 1260 [143]    DUMP ALGORITHM
  118. 1270 [143]*****************************
  119. 1280 [143]*****************************
  120. 1290 [153]"LOAD":[133]"SPRITE BLOCK NUMBER";BK:[153]"THIS WILL TAKE 47 SECONDS"
  121. 1300 [129] Z[178]0 [164] 2
  122. 1310 [129] X[178]0 [164] 18 [169] 3
  123. 1320 A((X[171]0)[173]3,8)[178][194](BK[172]64[170]X[170]Z[172]21)
  124. 1330 [130] X
  125. 1340 [129] X[178]1 [164] 19 [169] 3
  126. 1350 B((X[171]1)[173]3,8)[178][194](BK[172]64[170]X[170]Z[172]21)
  127. 1360 [130] X
  128. 1370 [129] X[178]2 [164] 20 [169] 3
  129. 1380 C((X[171]2)[173]3,8)[178][194](BK[172]64[170]X[170]Z[172]21)
  130. 1390 [130] X
  131. 1400 [129] Y[178]0 [164] 6
  132. 1410 [129] X[178]0 [164] 7
  133. 1420 A(Y,X)[178][180](A(Y,8)[175]2[174](7[171]X))
  134. 1430 [130] X
  135. 1440 [130] Y
  136. 1450 [129] Y[178]0 [164] 6
  137. 1460 [129] X[178]0 [164] 7
  138. 1470 B(Y,X)[178][180](B(Y,8)[175]2[174](7[171]X))
  139. 1480 [130] X
  140. 1490 [130] Y
  141. 1500 [129] Y[178]0 [164] 6
  142. 1510 [129] X[178]0 [164] 7
  143. 1520 C(Y,X)[178][180](C(Y,8)[175]2[174](7[171]X))
  144. 1530 [130] X
  145. 1540 [130] Y
  146. 1550 [129] X[178]0 [164] 7
  147. 1560 [129] Y[178]0 [164] 6
  148. 1570 D[178]D[170]A(Y,X)[172]2[174]Y
  149. 1580 [130] Y
  150. 1590 D$[178]D$[170][199](D[170]128):D[178]0
  151. 1600 [130] X
  152. 1610 [129] X[178]0 [164] 7
  153. 1620 [129] Y[178]0 [164] 6
  154. 1630 D[178]D[170]B(Y,X)[172]2[174]Y
  155. 1640 [130] Y
  156. 1650 D$[178]D$[170][199](D[170]128):D[178]0
  157. 1660 [130] X
  158. 1670 [129] X[178]0 [164] 7
  159. 1680 [129] Y[178]0 [164] 6
  160. 1690 D[178]D[170]C(Y,X)[172]2[174]Y
  161. 1700 [130] Y
  162. 1710 D$[178]D$[170][199](D[170]128):D[178]0
  163. 1720 [130] X
  164. 1730 PR$[178]PR$[170]D$[170][199](13):D$[178]""
  165. 1740 [130] Z
  166. 1750 [159]4,4
  167. 1760 [152]4,[199](8)PR$
  168. 1770 [152]4,[199](20)
  169. 1780 [160]4:[129]ZZ[178]1[164]2000:[130]:[138]
  170. 1790 [143]******************************
  171. 1800 [143]     END OF DUMP
  172. 1810 [143]******************************
  173. 1820 [153]"LOAD":[151]53280,12:[151]53281,15:[151]646,6:[151]V[170]21,0
  174. 1830 [153]:[153][163]13)"INSTRUCTIONS"
  175. 1840 [153]:[153]:[153]:[151]646,0
  176. 1850 [153]"        THIS SPRITE DUMP IS DESIGNED"
  177. 1860 [153]"    TO WORK WITH THE COMMODORE 1515,
  178. 1870 PRINT"    1525 OR 1526 PRINTER.
  179. 1880 [153]
  180. 1890 [153]"        OTHER  DOT MATRIX PRINTERS
  181. 1900 PRINT"    WILL WORK IF THEY ADEQUATELY
  182. 1910 [153]"    EMULATE COMMODORE DOT ADDRESSABLE
  183. 1920 PRINT"    GRAPHICS.
  184. 1930 [153]:[153]"        THE LOGIC WHICH PERFORMS THE
  185. 1940 PRINT"    DUMP IS AVAILABLE THROUGH THE
  186. 1950 [153]"    MENU AND MAY BE TYPED INTO ANY
  187. 1960 PRINT"    PROGRAM AS A SUBROUTINE."
  188. 1970 PRINT:PRINT:PRINT
  189. 1980 PRINTTAB(10)"PRESS F7 TO CONTINUE":
  190. 1990 GET RT$:IF RT$="" THEN 1990
  191. 2000 IF RT$=CHR$(136)THEN 1050
  192. 2010 GOTO 1990
  193. 2020 OPEN1,4:CMD1
  194. 2030 LIST 1180-1750
  195. 2040 PRINT#1:CLOSE1,4
  196. 2050 GOTO 1050
  197. 2060 PRINT"[147]":FORSD=1TO8:PRINT:NEXT:POKE646,7:X=0:CT=0
  198. 2070 X=X+1:POKE646,X:CT=CT+1
  199. 2080 PRINT"":FORSD=1TO8:PRINT:NEXT:PRINTTAB(22)"BYE !"
  200. 2090 FORT=1TO30:NEXT
  201. 2100 IF CT>20 THEN 2130
  202. 2110 REM CLR:END
  203. 2120 GOTO2070
  204. 2130 FORT=1TO1000:NEXT
  205. 2140 END:REM SYS64738
  206.